<template>
	<iframe :src="src" @load="$_bear_loadFn"></iframe>
</template>

<script>
	/**
	 * @author 唐国雄
	 * iframe加载资源
	 * 属性----------------------
	 * :src		加载链接
	 * 事件----------------------
	 * @load	iframe加载完成
	 * 方法----------------------
	 * runTask(task)	尽早的执行任务
	 *
	 * @typedef IframeLoad
	 * @event IframeLoad#load
	 * @type {Window} window iframe的window对象
	 */
	export default{
		name:'IframeLoad',
		props:{
			src:String
		},
		watch:{
			src(){
				this.window=null;
			}
		},
		created(){
			this.tasks=[];
		},
		methods:{
			$_bear_loadFn(e){
				this.window=this.$el.contentWindow;
				this.$emit('load',this.window);
				for(const task of this.tasks){
					task(this.window);
				}
				this.tasks=[];
			},
			/**
			 * @callback Task
			 * @param {Window} window iframe的window对象
			 */
			/**
			 * 尽早的执行任务
			 * @param {Task} task 执行的任务
			 */
			runTask(task){
				if(this.window){
					task(this.window);
				}else{
					this.tasks.push(task);
				}
			}
		}
	};
</script>

<style lang="scss">

</style>
